#include "receive.h"
#include "entity.h"
#include "utils.h"

/**
 * @brief 接收错误标志位
 * @author 杨明铎
*/
int receiveFlag(int net_fd){
    unsigned int frameLength;
    unsigned short flag;
    recv(net_fd, &frameLength, sizeof frameLength, MSG_WAITALL);
    recv(net_fd, &flag, frameLength, MSG_WAITALL);

    /// @bug 强转可能会有问题
    return (int)flag;
}

/**
 * @brief 根据命令做出相应处理
 * @author 杨明铎
*/
int resolve(int net_fd, unsigned short command, char *parameter){

    switch (command){
        case DATA:
            break;

        case LOGIN:
            // 
            break;

        case REGISTER:
            // 
            break;

        case CD:
            // 切换目录
            break;

        case LS:
            // 返回ls内容
            printListDirectoryContent(net_fd);
            break;

        case PWD:
            // 返回当前目录
            printCurrentDirectory(net_fd);
            break;
            
        case PUT_FILE:
            // 上传文件
            putFile(net_fd, parameter);
            break;

        case GET_FILE:
            // 下载文件
            //目标目录
            getFile(net_fd,parameter);
            break;

        case RM:
            // 删除文件
            break;

        case MKDIR:
             // 服务端有数据到来
             //TODO:服务端的send未实现，因为服务端handcommand没有参数net_fd
               /*char response[1024];
                int bytes = recv(net_fd, response, sizeof(response) - 1, 0);
                if (bytes > 0) {
                    response[bytes] = '\0';
                    printf("Server: %s\n", response);
                }
                */ 
            break;

    }
    return 0;
}
